package controlador;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import modelo.CargarLineas;
import modelo.Despacho;
import modelo.Drogueria;
import modelo.CargarClientes;
import modelo.CargarProveedores;
import modelo.Cliente;
import modelo.FacturaCompra;
import modelo.Pedido;
import modelo.Proveedor;
import modelo.Linea;
import modelo.CargarProductos;
import modelo.Producto;
import modelo.Deposito;
//import vista.VentanaAgregarLinea;
import vista.VentanaPrincipal;

public class ControladorPrincipal implements ActionListener{
	
	private Drogueria drogueria;
	private Linea linea;
	private VentanaPrincipal ventanaPrincipal;
	private Deposito deposito;
	private FacturaCompra factura;
	private ControladorAgregarCliente controladorAgregarCliente;
	private ControladorAgregarLinea controladorAgregarLinea;
	private ControladorAgregarProducto controladorAgregarProducto;
	private ControladorAgregarProveedor controladorAgregarProveedor;
	private ControladorCompraProveedor controladorCompraProveedor;
	private ControladorVentanaReubicar controladorVentanaReubicar;
	private ControladorVentanaConsultarProductos controladorVentanaConsultarProductos;
	private ControladorListadoDespachosLapsoTiempo controladorListadoDespachosLapsoTiempo;
	private ControladorVentanaConsultaPorFechaDeVencimiento controladorVentanaConsultaPorFechaDeVencimiento;
	
	private CargarClientes cargarClientes;
	private ArrayList<Cliente> clientes;
	
	private CargarProveedores cargarProveedores;
	private ArrayList<Proveedor> proveedores;
	
	private CargarLineas cargarLineas;
	private ArrayList<Linea> lineas;
	
	private CargarProductos cargarProductos;
	private ArrayList<Producto> productos;
	private ArrayList<Deposito>  depositos;
	private ArrayList<Pedido> pedidos;
	private ControladorVentanaPedido controladorVentanaPedido;
	private ControladorAgregarDeposito controladorAgregarDeposito;
	private ControladorListadoDespachosCliente controladorListadoDespachosCliente;
    private ArrayList<FacturaCompra> facturaCompra;
	private ControladorListadoProductosPorDeposito controladorListadoProductosPorDeposito;
	//private ControladorVentanaConsultaPorFechaDeVencimiento controladorVentanaConsultaPorFechaDeVencimiento;
	//private ControladorListadoProductosPorDeposito controladorListadoProductosPorDeposito;
	//private ControladorVentanaConsultaPorFechaDeVencimiento controladorVentanaConsultaPorFechaDeVencimiento;
	
	
	public ControladorPrincipal() {
		super();
		// TODO Auto-generated constructor stub
		ventanaPrincipal = new VentanaPrincipal();	
		ventanaPrincipal.setLocationRelativeTo(null);
		ventanaPrincipal.setVisible(true);	
		ventanaPrincipal.agregarListener(this);
		
		//Se leen los archivos de texto
		lineas = this.cargarLineas.leerLineas();
		clientes = this.cargarClientes.leerClientes();
	 	proveedores = this.cargarProveedores.leerProveedores();
	 	this.facturaCompra = new ArrayList<>();
	    drogueria = new Drogueria(clientes,proveedores,lineas,productos, depositos, pedidos);
	   // productos = this.cargarProductos.leerProductos();
	    linea = new Linea(productos);
	    clientes = new ArrayList();		
	    proveedores = new ArrayList();	
	
	}
	
	
	
	public void actionPerformed(ActionEvent ae){
		 
			if (ae.getActionCommand().equalsIgnoreCase("Clientes")){ 
				
			     	controladorAgregarCliente = new ControladorAgregarCliente(drogueria);
				
			}else if (ae.getActionCommand().equalsIgnoreCase("Proveedores")){ 
				
				controladorAgregarProveedor = new ControladorAgregarProveedor(drogueria);
			
			}else if (ae.getActionCommand().equalsIgnoreCase("Lineas")){ 
				
					controladorAgregarLinea= new ControladorAgregarLinea(drogueria);
				
				} else if (ae.getActionCommand().equalsIgnoreCase("Compra a Proveedor")){ 
				
					controladorCompraProveedor= new ControladorCompraProveedor(drogueria, deposito);
				
				}else if (ae.getActionCommand().equalsIgnoreCase("Reubicar")){ 
				
					controladorVentanaReubicar= new ControladorVentanaReubicar(drogueria);
				
				}else if (ae.getActionCommand().equalsIgnoreCase("Productos")){ 
					
				    controladorAgregarProducto = new ControladorAgregarProducto(drogueria);
					
				} else if (ae.getActionCommand().equalsIgnoreCase("Depositos")){ 
				
					controladorAgregarDeposito = new ControladorAgregarDeposito(this.drogueria);
				
				} else if (ae.getActionCommand().equalsIgnoreCase("Facturas de Ventas")){ 
				
					controladorVentanaPedido = new ControladorVentanaPedido(this.drogueria, this.productos);

				} else if (ae.getActionCommand().equalsIgnoreCase("Compras")){ 
				
					ventanaPrincipal.mostrarMensaje("Factura de Compra");
				
				} else if (ae.getActionCommand().equalsIgnoreCase("Despachos por Lapsos")){ 
				
					controladorListadoDespachosLapsoTiempo = new ControladorListadoDespachosLapsoTiempo(this.drogueria);
				
				} else if (ae.getActionCommand().equalsIgnoreCase("Despachos a Clientes")){ 
				
					controladorListadoDespachosCliente = new ControladorListadoDespachosCliente(this.drogueria);
				
				}else if (ae.getActionCommand().equalsIgnoreCase("Disponibilidad de Productos")){ 
				
					controladorVentanaConsultarProductos = new ControladorVentanaConsultarProductos(drogueria,linea);
				
				} else if (ae.getActionCommand().equalsIgnoreCase("Salir")){
					
					System.exit(0);
					
				}else if (ae.getActionCommand().equalsIgnoreCase("Listado Productos por Deposito")){
//
				controladorListadoProductosPorDeposito = new ControladorListadoProductosPorDeposito(drogueria);

				}else if (ae.getActionCommand().equalsIgnoreCase("Consultar Productos Proximos a Vencer")){
					controladorVentanaConsultaPorFechaDeVencimiento = new ControladorVentanaConsultaPorFechaDeVencimiento(drogueria);
				}
	}

		
}
